home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / LANG / GOFER / !Gofer / History < prev    next >
Text File  |  1994-06-14  |  4KB  |  127 lines

  1. ! G.C.Wraith 14/06/94 !
  2.  
  3. This version of Gofer has been compiled from the sources for
  4. Gofer v2.30, obtained by ftp from nebula@cs.yale.edu, with
  5. the following modifications, aimed at improving the use of
  6. Gofer in an !Edit taskwindow:
  7.  
  8. 1) A small object file o.vsynch, created with Express Assembler,
  9.    is linked with the object files created by compiling the
  10.    standard v2.30 sources. See below for the source.
  11.  
  12. 2) An extra header file h.vsynch is used to perform the linking.
  13.    Its contents are:
  14.  
  15.     /* h.vsynch */
  16.  
  17.     extern int  taskwin_query(void);  /* are we in a taskwindow? */
  18.     extern int   vsynch_off(void);    /* disable vsynch events   */
  19.     extern void  vsynch_on(int);      /* enable vsynch events    */
  20.  
  21.     #define VSYNCH_DISABLE if (taskwindow) vs_en = vsynch_off()
  22.     #define VSYNCH_ENABLE  if (taskwindow) vsynch_on(vs_en)
  23.  
  24.     /************************************************************** 
  25.      *  use as
  26.      *
  27.      *  int vsynch_count;
  28.      *  vsynch_count = vsynch_off();
  29.      *  < fast bits here >
  30.      *  vsynch_on(vsynch_count);
  31.      **************************************************************/
  32.  
  33. 3) The file c.gofer is modified as follows:
  34.  
  35.    An extra symbol TASKWIN is used to control inclusion of new code
  36.    which disables the vertical-synch event when evaluation takes
  37.    place. This prevents the evaluation thread from being pre-empted
  38.    by the taskwindow. When evaluation finishes, or an error occurs,
  39.    the event is re-enabled with the semaphore saved by the disabling
  40.    code.
  41.  
  42.    In accordance with RiscOS tradition, shell escapes can also be
  43.    introduced using * (instead of the Unix-traditional !).
  44.  
  45. 4) The file c.prims has been modified as follows:
  46.  
  47.     primAsinFloat and primAcosFloat now produce an error gracefully
  48.     if presented with an argument of absolute value greater than one.
  49.  
  50.     primExpFloat produces an error gracefully if presented with an
  51.     argument that is too large for the floating point representation
  52.     of the result.
  53.  
  54. 5)  To accommodate the narrower width of the taskwindow, the progress-
  55.     to-completion output (.....) has been replaced by:
  56.  
  57.     Parsing -> Dependency analysis -> Type checking -> Compiling -> 
  58.  
  59. The make-file must be modified to include the option -DTASKWIN and
  60. to mention the dependencies on o.vsynch and h.vsynch, when recompiling.
  61.  
  62. The desktop front end uses filetypes for scripts, projects and preludes.
  63. These types are held in the system variables:
  64.  
  65.        Gofer_Script$,  Gofer_Project$,  Gofer_Prelude$ 
  66.  
  67. I applied to Acorn for official recognition for the values chosen,
  68. but I am not sure whether recognition has been granted.
  69.  
  70. The run-action of a prelude file is to be made the default prelude.
  71. The run-action of a script or project file is to be loaded into
  72. Gofer, with Gofer being started up if necessary. Only one taskwindow
  73. running Gofer can be open at a time. Choosing quit from the iconbar
  74. also closes the taskwindow. Text files can be loaded as scripts by
  75. being dragged to the iconbar icon. Scripts and projects can also be 
  76. loaded this way, of course.
  77.  
  78. The front end is written in Basic. It must have "!RunImage" as file
  79. name. It provides interactive help.
  80.  
  81. The following is a source listing of vsynch, provided for those who
  82. want to compile their own versions:
  83.  
  84. ; Express Assembler Source for vsynch
  85.  
  86.  SETTYPE "Data"
  87.  OBJECT  "vsynch"
  88.  AREA    "VSYNCH",CODE+READONLY
  89.  
  90.  EQU  Disable_event,13
  91.  EQU  Enable_event,14
  92.  EQU  Vsynch_event,4
  93.  
  94. taskwin_query
  95.  MOV     R0,#0
  96.  SWI     "XTaskWindow_TaskInfo"
  97.  MOVS    PC,R14
  98.  
  99. vsynch_off
  100.  MVN     R3,#0
  101. loop1
  102.  ADD     R3,R3,#1
  103.  MOV     R0,#Disable_event
  104.  MOV     R1,#Vsynch_event
  105.  SWI     "XOS_Byte"
  106.  CMP     R1,#0
  107.  BNE     loop1
  108.  MOV     R0,R3
  109.  MOVS    PC,R14
  110.  
  111. vsynch_on
  112.  MOVS    R3,R0
  113.  MOVEQS  PC,R14
  114. loop2
  115.  MOV     R0,#Enable_event
  116.  MOV     R1,#Vsynch_event
  117.  SWI     "XOS_Byte"
  118.  SUBS    R3,R3,#1
  119.  BNE     loop2
  120.  MOVS    PC,R14
  121.  
  122.  EXPORT  taskwin_query
  123.  EXPORT  vsynch_off
  124.  EXPORT  vsynch_on
  125.  END
  126.  
  127. ---- end ---------------